1.02. Введение
Данная книга должна выполнить сложнейшую задачу – выступить в роли антикризисного пакета для IT-новичка и глотком свежего воздуха для профессионала. Она является как обучающим материалом, так и настольным руководством-справочником. Возможно, даже энциклопедией. Теория, конечно, будет, но мы сократим её и структурируем, отметим всё в формате тезисов так, чтобы получить инструкцию по выживанию в IT для тех, кто устал от сложных объяснений. Конечно, я встречал такие учебники, которые громко заявляют о себе с приписками «с нуля», «для начинающих», «для чайников», но нет.
Источники? Я не буду брать непроверенную информацию. В моём распоряжении мой личный опыт, сотни прочитанных книг и исследований, тысячи статей и материалов, поэтому для простого перечисления придётся выделить отдельную книгу, что, на мой взгляд, излишний труд. Условимся на том, что важные моменты я помечу, и если будут хорошие источники, с которыми стоит ознакомиться, я оставлю на них ссылки.
Вы новичок? Тогда давайте договоримся. Вы – не чайник, а потенциальный специалист. У вас получится. Не сдавайтесь. Не слушайте злые языки, не переживайте из-за ошибок, и не питайте иллюзий, что это не для вас. В айти есть много различных видов деятельности, и вы точно могли бы заняться чем-то из этого множества. И чтобы конкурировать, вам нужно разобраться в предмете, быть полезным для работодателя (даже если вы сами себе начальник!). Именно знания дают возможность получить опыт, а опыт открывает двери.
Вы уже опытный специалист? Тогда примите мою благодарность за проявленный интерес. Я надеюсь, что у вас есть тяга к знаниям, и данный цикл книг будет вам полезен, подарив что-то новое. Конечно, для опытного человека будет немного забавно читать, как устроен компьютер, что такое файл, как работает интернет, и так далее - но представьте, что много людей, которые этого действительно не знают! Многие не знают даже самых верхних основ, и если моя книга попала в руки к таким людям - это хорошо!
Важно: любая картина - паззл, состоящий из элементов. Я специально выстроил всё так, чтобы паззл сложился именно корректно. Поначалу будет очень легко, и порой покажется «а, я это уже знаю!» и захочется пропустить. Но потом, когда перейдём к сложной теме, именно пропушенный фундамент даст о себе знать. И будет очень больно. А порой будет наоборот, сначала непонятный термин - но понимание придёт позднее. Мы будем и повторяться, и углубляться. Поверьте, если в начальных главах будет казаться, что мы разбираем слишком простые вещи, то, когда вы дойдёте до работы с контейнеризацией, могут возникнуть очень большие проблемы с пониманием.
IT — это не легко. Я не хочу, чтобы вы просто научились писать на одном языке. Сейчас у нас нет выбора, придётся учиться всему, разбираться во всём. Представьте, насколько можно стать ценным сотрудником, если разбираться во всей сфере? А ведь это реально. К тому же, если в процессе изучения вам покажется, что программирование даётся тяжело - возможно, интересно будет в другом аспекте. Поэтому, не беспокойтесь - всё идёт по плану. Просто читайте. Так получилось, что я интересуюсь довольно большим спектром наук, в том числе историей, правом, экономикой, политологией, социологией, психологией, философией, поэтому постараюсь частично затрагивать важные аспекты технологий.
Хочу отметить, что многие книги в сфере являются настольными, и именно поэтому так сложны для освоения. Допустим, изучить C# и все особенности .NET Framework не получилось бы, просто пробежавшись – на практике всё равно придется вернуться к нужной главе и углубиться. Постарайтесь использовать подход чтения несколько раз.
-
В первый раз пробегитесь от начала до конца;
-
Во второй раз можете более бегло проходит по темам, в понимании которых вы уверены;
-
В третий раз – углубитесь в интересное. Возможно, именно после третьего раза вы будете точно готовы к профессиональной литературе высокого уровня.
При переходе в новую сферу, любого человека пугает «духота» изложения, обилие «воды» и сложные термины. Для удобства, в приложении, я подготовлю глоссарий и словарь важных англоязычных слов, которые встретятся на практике. Рекомендую пару раз пробежаться по ним после прочтения. При этом, если вы встретите непонятное слово, вы найдёте его значение в этих приложениях. Возможно, эта книга даже и не должна считаться учебником, скорее научно-исследовательской работой, используемой в качестве учебного материала.
Частенько, когда происходит обучение навыкам работы с какой-то платформой, возникают вопросы общего характера. Поэтому это действительно важно – понимать теоретический минимум. Именно понимать, потому что чтение большого количества теории мешает понять суть, вода отнимает внимание, и теряется понимание важной части. Каждый продвинутый пользователь работает с инструментами так часто, что уже не осознает важность обучения новичка таким «азам» этого инструмента. Данная книга каждую главу преподносит не просто так – важен каждый элемент, каждая крупица и каждое понятие.
Если вы хотите программировать, вам придётся перестроить свой мозг (если уже не перестроили ранее). Если же вы не планируете углубляться – можете не заучивать методы, классы, и прочие технические особенности языков. Однако разбираться в чём-то новом всегда хорошо. Чтобы помочь новичку научиться правильно мыслить, понимать код и разработку, я бы посоветовал следующее:
- Фокус на абстрактном. Не пытайтесь сразу писать код, сначала разберите задачу, разбейте её на маленькие, легко решаемые подзадачи. Визуализируйте процесс – таблицей, списком, схемой, используйте диаграммы, блок-схемы или даже просто рисуйте набросок. Это поможет структурировать мысли и увидеть всю картину. Абстрактное мышление – это ключ.
- Декомпозиция задач – сложные задачи всегда нужно разделять на более простые, и декомпозировать задачу нужно до тех пор, пока не останутся только базовые операции. Это поможет понять логику и разработать алгоритм решения.
- Понимание типов данных и структур. Мы достаточно углубимся в эту часть, поэтому важно уделить особое внимание типам данных и структурам данных. Понимание того, как хранится и обрабатывается информация, критически важно для понимания кода. Изучите массивы, списки, словари, объекты – и как они работают.
- Рассматривайте мир как объекты, и определяйте им характеристики. Представьте, что умеет ваш кот. Кот – это объект, объект какого типа? Типа животное. Какие у него есть свойства? Пушистый, толстый. Что он умеет? Мяукать. Анализируйте мир, определяя ключевое – «какими свойствами обладает объект?» и «что умеет выполнять этот объект?».
- Отладка кода как навык. Позднее вы разберетесь, что это такое. Но смысл в другом – не бойтесь ошибок! Они – неотъемлемая часть процесса обучения. Никто не может работать без ошибок, поэтому смело учитесь использовать отладчики, прослеживать поток выполнения программы, находить ошибки и исправлять их. Это очень ценный навык. Всегда задавайте вопрос – «как это работает?» и «почему произошло именно так?».
- Чтение чужого кода. Читайте много кода. Конечно, вы поначалу ещё должны привыкнуть, и начать с простых проектов, и лишь потом перейти к более сложным. Всегда старайтесь понять логику чужого кода, анализируйте его структуру, ищите лучшие практики и изучайте новые приёмы. Не копируйте слепо – понимайте, что вы читаете.
- Практика, практика, практика. Пишите код каждый день – время бежит, а любой опыт – это опыт. Начните с простых проектов, постепенно увеличивая сложность. Это лучший способ закрепить знания и научиться решать реальные задачи. Не стесняйтесь экспериментировать и пробовать новые вещи. Увидели новый фреймворк? Скачайте, установите, попробуйте. Зато потом, вы смело ответите положительно на вопрос, «был ли опыт работы» с этим фреймворком.
- Используйте как можно больше ресурсов. Обращайтесь за помощью к коллегам, читайте официальную документацию, форумы, проходите онлайн-курсы, задавайте вопросы, делитесь опытом – это ускорит ваше обучение.
Это, наверное, самое главное – понять, а не запомнить.
Читайте, перечитывайте, делайте пометки. И помните - каждый эксперт когда-то не знал фундаментальных основ.
Самое сложное - начать, поэтому сейчас мы начнём с рассмотрения дорожной карты.
Если говорить о нескольких повторных прочтениях, то это всегда полезно! Давайте схематично.